home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: delta / whiteline CD Series - delta.iso / vision / povray / scenes / level3 / tomb.pov < prev    next >
Text File  |  1995-11-25  |  14KB  |  644 lines

  1. // Persistence Of Vision raytracer version 2.0 sample file.
  2.  
  3. // By Drew Wells
  4.  
  5. // Title-"Tomb" 
  6. // a haunted tomb on a hill, gravestones, rusty fence, pumpkin patch. 
  7. // - Drew Wells cis 73767,1244 
  8. // 11/90 rev 7/92
  9. #include "shapes.inc"
  10. #include "colors.inc"
  11. #include "textures.inc"
  12. #include "stones.inc"
  13.  
  14. /* Camera */
  15. camera {
  16.    direction <0.0, 0.0,  1.5>
  17.    up  <0.0,  1.0,  0.0>
  18.    right <-4/3, 0.0, 0.0>
  19.    translate < -15.0,  5.0,  120.0>
  20.    look_at <10.0, 12.0, 55.0>
  21. }
  22. #declare TombTex = texture { Stone8 finish { ambient .1 } scale 0.5 }
  23. #declare HeadTex = texture { Stone3  }
  24. #declare ColTex  = texture { Stone13 finish { phong .3 } scale .2 }
  25. #declare Rust2 = texture { Stone1 }
  26.  
  27.  
  28. #declare Yellow_Clouds = pigment {
  29.    bozo
  30.    turbulence 0.6
  31.    colour_map {
  32.       [0.0 0.3   colour red 0.9 green 0.5  blue 0.3
  33.                  colour red 0.6 green 0.4  blue 0.0]  
  34.       [0.3 0.6   colour red 0.6 green 0.4  blue 0.0
  35.                  colour red 0.4 green 0.4  blue 0.0 filter 1.0]  
  36.       [0.6 0.8   colour red 0.4 green 0.4  blue 0.0 filter 1.0
  37.                  colour Clear]  
  38.       [0.8 1.001 colour Clear
  39.                  colour Clear]
  40.    }
  41. }
  42.  
  43. #declare Sunset_Sky = pigment {
  44.    gradient y
  45.    
  46.    colour_map {
  47.       [0.0 0.4   colour red 0.8 green 0.0 blue 0.0
  48.                  colour red 0.4 green 0.0 blue 0.4]
  49.       [0.4 0.6   colour red 0.4 green 0.0 blue 0.4
  50.                  colour red 0.0 green 0.0 blue 0.2]
  51.       [0.6 1.001 colour red 0.0 green 0.0 blue 0.2
  52.                  colour red 0.0 green 0.0 blue 0.1]
  53.    }
  54.    scale 700.0
  55. }
  56.  
  57.  
  58. /*************************************************/
  59. /* Define objects for use in scene               */
  60. /*************************************************/
  61.  
  62. #declare Cross = union {
  63.    /* Tried to make celtic cross, but vga resolution is too coarse */
  64. /*
  65.       intersection {
  66.          object {
  67.             Cylinder_Z
  68.             scale 0.4
  69.             translate <0.0, 0.45, 0.0>
  70.          }
  71.          plane { -z, 0.02 }
  72.          plane { z, 0.02 }
  73.       }
  74.  */
  75.  
  76.    /*vertical part*/
  77.    intersection {
  78.       /*top & bottom*/
  79.       plane { y, 1.0 }
  80.       plane { -y, 2.0 }
  81.       /*front & back*/
  82.       plane { z, 0.12 }
  83.       plane { -z, 0.12 }
  84.       /*left & right*/
  85.       plane { x, 0.15 }
  86.       plane { -x, 0.15 }
  87.    }
  88.  
  89.    /*horizontal part*/
  90.    intersection {
  91.       /*top & bottom*/
  92.       plane { y, 0.6 }
  93.       plane { -y, -0.3 }
  94.       /*front & back*/
  95.       plane { z, 0.12 }
  96.       plane { -z, 0.12 }
  97.       /*left & right walls*/
  98.       plane { x, 0.7 }
  99.       plane { -x, 0.7 }
  100.    }
  101.  
  102.    bounded_by { box { <-.8, -2.1, -.2>,  <.8, 1.1, .8> } }
  103.  
  104.    texture {
  105.       HeadTex
  106.       scale 0.1
  107.       finish {
  108.          ambient 0.1
  109.          diffuse 0.7   
  110.       }
  111.    }
  112. }
  113.  
  114. #declare Headstone = union {
  115.    intersection {      
  116.       object { Cylinder_Z }
  117.       plane { -z, 0.1 }
  118.       plane { z, 0.1 }
  119.    }            
  120.  
  121.    intersection {
  122.       /*top & bottom*/ 
  123.       plane { y, 0.0 }
  124.       plane { -y, 2.0 }
  125.       /*front & back*/
  126.       plane { z, 0.1 }
  127.       plane { -z, 0.1 }
  128.       /*left & right */
  129.       plane { x, 1.0 }
  130.       plane { -x, 1.0 }
  131.    }
  132.  
  133.    texture { 
  134.       HeadTex
  135.       scale <0.1, 0.2, 0.1>
  136.  
  137.       finish {
  138.          ambient 0.1
  139.          diffuse 0.7   
  140.       }
  141.    }
  142. }
  143.  
  144.  
  145. #declare Pole = object { Cylinder_Y scale <0.1, 1.0, 0.1> }
  146.  
  147.  
  148. #declare Xpole = object { Cylinder_X scale <0.1, 0.1, 0.1> }
  149.  
  150. /* Rusty iron gate & fence - object should have been composite to avoid the */
  151. /*                           "carved from one piece" look. */
  152. #declare Gate = union {
  153.    intersection {
  154.       object { Xpole }
  155.       plane { x, 8.0 }
  156.       plane { -x, 2.0 }
  157.       translate 6.5*y
  158.    }
  159.    intersection {
  160.       object { Xpole }
  161.       plane { x, 8.0 }
  162.       plane { -x, 2.0 }
  163.       translate 1.9*y
  164.    }
  165.    intersection {
  166.       object { Pole }
  167.       plane { y, 7.5 }
  168.       plane { -y, 0.0 }
  169.       translate 1.0*x
  170.    }
  171.    sphere { <1.0, 7.5, 0.0>, 0.3 }
  172.    intersection {
  173.       object { Pole }
  174.       plane { y, 7.75 }
  175.       plane { -y, 0.2 }
  176.       translate 2.5*x
  177.    }
  178.    sphere { <2.5, 7.75, 0.0>, 0.3 }
  179.    intersection {
  180.       object { Pole }
  181.       plane { y, 8.0 }
  182.       plane { -y, 0.2 }
  183.       translate 4.0*x
  184.    }
  185.    sphere { <4.0, 8.0, 0.0>, 0.3 }
  186.    intersection {
  187.       object { Pole }
  188.       plane { y, 7.75 }
  189.       plane { -y, 0.2 }
  190.       translate 5.5*x
  191.    }
  192.    sphere { <5.5, 7.75, 0.0>, 0.3 }
  193.    intersection {
  194.       object { Pole }
  195.       plane { y, 7.5 }
  196.       plane { -y, 0.2 }
  197.       translate 7.0*x
  198.    }
  199.    sphere { <7.0, 7.5, 0.0>, 0.3 }
  200.  
  201.    bounded_by { box { <0.0, 0.0, -1.0>, <8.0, 9.0, 1.0> } }
  202.  
  203.    texture { 
  204.       Rust2
  205.       finish {
  206.          ambient 0.2
  207.          diffuse 0.9   
  208.       }
  209.    }    
  210. }
  211.  
  212. /* a rectangular pad to serve as a footing for the column */
  213. #declare BasePad = box {
  214.    <-1.2, -0.25, -1.2>, <1.2, 0.25, 1.2>
  215.    pigment { colour red 0.6 green 0.6 blue 0.4 }
  216. }
  217.  
  218. #declare ColTop = union {
  219.    box { <-1.5, -.1, -1.5>, <1.5, .2, 1.5> }
  220.    box { <-1.25, .2, -1.25> <1.25, .4, 1.25> }
  221.    box { <-1, .4, -1> <1, .6, 1> }
  222.  
  223.    pigment { color red .6 green .6 blue .4 }
  224. }
  225.  
  226. #declare Beam = object { Cylinder_Y }
  227.  
  228. #declare Beam2 = object {
  229.    Cylinder_Y
  230.    inverse
  231.    scale  <.3, 1, .3>
  232.    translate 1.4*x
  233. }
  234.  
  235. #declare Beam3 = intersection {
  236.    object { Beam  scale <1.2, 1, 1.2> }
  237.    object { Beam2 }
  238.    object { Beam2 rotate  -45*y }
  239.    object { Beam2 rotate  -90*y }
  240.    object { Beam2 rotate -135*y }
  241.    object { Beam2 rotate  180*y }
  242.    object { Beam2 rotate   45*y }
  243.    object { Beam2 rotate   90*y }
  244.    object { Beam2 rotate  135*y }
  245.    plane { y, 8 }
  246.    plane { -y, 0 }
  247.  
  248.    pigment { color red .8 green 0 blue .0 }
  249. }
  250.  
  251. #declare Column = union {
  252.    object { Beam3   texture { ColTex } }
  253.    //object { BasePad texture { ColTex finish {phong 0} } translate <0, 0, 0> }
  254.    object { ColTop texture { ColTex finish {phong 0} } translate <0, 8, 0> }
  255. }
  256.  
  257.  
  258. #declare Tomb = union {
  259.    difference {
  260.       box { <-10, -5, -7.5>, <10, 10, 7.5> } // bulk
  261.       box { <-3, -5, -7.0>, <3, 7, 7.6> } // door
  262.    }
  263.    /* Foundation */
  264.    box { <-11, -2, -10.5>, <11, -1, 10.5> }
  265.    box { <-12, -3, -11>,   <12, -2, 11> }
  266.    box { <-13, -4, -12>,   <13, -3, 12> }
  267.    box { <-14, -5, -13>,   <14, -4, 13> }
  268.  
  269.    bounded_by { box { <-14.1, -5.1, -13.1>, <14.1, 10.1, 18.6> } }
  270. }
  271.  
  272. #declare InnerBeams = union {
  273.    intersection {
  274.       object { Beam }
  275.       plane { y, 8.0 }
  276.       plane { -y, 2.0 }
  277.       translate < 5.0, 0.0, 7.5>
  278.    }
  279.    intersection {
  280.       object { Beam }
  281.       plane { y, 8.0 }
  282.       plane { -y, 2.0 }
  283.       translate < -5.0, 0.0, 7.5>
  284.    }
  285.  
  286.    pigment { Blue }
  287. }
  288.  
  289.  
  290. #declare Pointy = object {
  291.    /*pointy part*/
  292.    intersection {
  293.       plane { -y, 1 }
  294.       plane { -z, 1 }
  295.       plane { z, 1 rotate  27*y  rotate 40*x }
  296.       plane { z, 1 rotate -27*y  rotate 40*x }
  297.       plane { +x, 0 rotate   70*z }
  298.       plane { -x, 0 rotate  -70*z }
  299.       scale <3, 4, 1>
  300.       translate < 0, 12, 8.5>
  301.    }
  302.  
  303.    pigment { Blue }
  304. }
  305.  
  306.  
  307. #declare CornerBeams = union {
  308.    intersection {
  309.       object { Beam scale <1.5, 1.0, 1.5>}
  310.       plane { y, 10.0 }
  311.       plane { -y, 2.0 }
  312.       translate < 10.0, 0.0, 7.5>
  313.    }
  314.    intersection {      
  315.       object { Beam scale <1.5, 1.0, 1.5> }
  316.       plane { y, 10.0 }
  317.       plane { -y, 2.0 }
  318.       translate <-10.0, 0.0, 7.5>
  319.    }
  320.    sphere { <-10.0, 10.0, 7.5>, 1.5 }
  321.    sphere { < 10.0, 10.0, 7.5>, 1.5 }
  322.  
  323.    pigment { Blue }
  324. }
  325.  
  326. /* Ghost in tomb doorway */
  327. #declare Figure = intersection {
  328.    object { Beam scale <2.3, 1.0, 2.3> }
  329.    plane { y, 8.0 }
  330.    plane { -y, 2.0 }
  331.    translate 4.3*z
  332.  
  333.    texture {
  334.       pigment {
  335.          granite
  336.          /* Use any ghost image you like for the tomb doorway or comment */
  337.          /* out the Figure in TombAll */
  338.          /*imagemap { gif "ghost.gif" once interpolate 2.0 } */
  339.          scale < 6.5, 8.0, 6.5 >
  340.          translate < -1.0, 7.5, 4.3 >
  341.          quick_color Black
  342.       }
  343.       finish {
  344.          ambient 0.10
  345.          diffuse 0.3
  346.       }
  347.    }
  348. }
  349.  
  350. /* TombAll is the completed tomb */
  351. #declare TombAll = union {
  352.    object { Tomb texture { TombTex } }
  353.    object { InnerBeams texture { Stone21 } }
  354.    object { Pointy texture { Stone4 } }
  355.    object { CornerBeams texture { Stone18 scale <.5, .5, .5> } }   
  356. }
  357.  
  358. /* Pumpkin parts */
  359. #declare Stem = intersection {
  360.    object { Pole }
  361.    plane { y, 0.04 rotate <0.0, -10.0, -10.0> }
  362.    plane { -y, 1.0 }
  363.    translate <0.0, 0.3, 0.0>
  364.  
  365.    texture {
  366.       pigment { color red 0.04 green 0.33 blue 0.05 }
  367.       normal {
  368.          bumps 0.5
  369.          scale 0.2
  370.       }
  371.       finish {
  372.          ambient 0.1
  373.          diffuse 0.9   
  374.       }
  375.    }
  376. }
  377.  
  378. #declare Slice = sphere {
  379.    <0, 0, 0>, 1
  380.    translate <0.0, 0.0, 0.5>
  381.    scale <0.28, 0.30, 0.40>
  382. }
  383.  
  384. #declare Pumpkin = union {
  385.    object { Slice }
  386.    object { Slice  rotate  -20.0*y }
  387.    object { Slice  rotate  -40.0*y }
  388.    object { Slice  rotate  -60.0*y }
  389.    object { Slice  rotate  -80.0*y }
  390.    object { Slice  rotate -100.0*y }
  391.    object { Slice  rotate -120.0*y }
  392.    object { Slice  rotate -140.0*y }
  393.    object { Slice  rotate -160.0*y }
  394.    object { Slice  rotate -180.0*y }
  395.    object { Slice  rotate -200.0*y }
  396.    object { Slice  rotate -220.0*y }
  397.    object { Slice  rotate -240.0*y }
  398.    object { Slice  rotate -260.0*y }
  399.    object { Slice  rotate -280.0*y }
  400.    object { Slice  rotate -300.0*y }
  401.    object { Slice  rotate -320.0*y }
  402.    object { Slice  rotate -340.0*y }
  403.  
  404.    bounded_by { sphere { <0, 0, 0>, 1.5 } }
  405.  
  406.    texture {
  407.       pigment { color red 0.5 green 0.22 blue 0.1 }
  408.       normal {
  409.          bumps 0.3
  410.          scale 0.1
  411.       }
  412.       finish {
  413.          ambient 0.1
  414.          diffuse 0.9
  415.          phong 0.75
  416.          phong_size 30.0
  417.       }
  418.    }
  419. }
  420.  
  421.  
  422. /*******************************************/
  423. /* Scene description     */
  424. /*******************************************/
  425.  
  426. object {
  427.    Cross
  428.    scale <1.7, 2.0, 1.0>
  429.    rotate -15.0*x
  430.    translate <-16.0, 7.7, 61.5>    
  431. }
  432.  
  433. object {
  434.    Headstone
  435.    scale <1.0, 1.0, 1.0>
  436.    rotate 15.0*x
  437.    translate <-14.0, 4.0, 76.0>
  438. }
  439.  
  440. object {
  441.    Headstone
  442.    scale <1.0, 1.0, 1.0>
  443.    translate <12.0, 4.0, 74.0>
  444. }
  445.  
  446. object {
  447.    Headstone
  448.    scale <1.0, 1.0, 1.0>
  449.    rotate -10.0*x
  450.    translate <18.0, 8.0, 70.0>
  451. }
  452.  
  453. object {
  454.    Cross
  455.    scale <1.5, 2.0, 1.0>
  456.    rotate -15.0*x
  457.    translate <17.0, 10.0, 60.0>
  458. }
  459.  
  460. object {
  461.    Cross
  462.    scale <1.5, 2.0, 1.0>
  463.    rotate -15.0*x
  464.    translate <26.0, 10.0, 70.0>
  465. }
  466.  
  467. object {
  468.    Cross
  469.    scale <1.5, 2.0, 1.0>
  470.    rotate <-15.0, 0.0, -10.0>
  471.    translate <31.0, 10.0, 78.0>
  472. }
  473.  
  474.  
  475. /* Little Pumpkin Patch */
  476. object {
  477.    Pumpkin
  478.    scale <1.5, 2.0, 1.5>
  479.    translate <5.0, 1.55, 95.0>
  480. }
  481.  
  482. object {
  483.    Stem
  484.    scale <1.5, 2.5, 1.5>
  485.    translate < 5.0, 1.55, 95.0>
  486. }
  487.  
  488. object {
  489.    Pumpkin
  490.    scale <1.5, 2.5, 1.5>
  491.    translate < 11.0, 1.6, 90.0>
  492. }
  493.  
  494. object {
  495.    Stem
  496.    scale <1.5, 2.5, 1.5>
  497.    translate < 11.0, 1.6, 90.0>
  498. }
  499.  
  500.  
  501. /* Ghastly Tomb!*/
  502. object {
  503.    TombAll
  504.    rotate <7.0, 15.0, 0.0>
  505.    translate <0.0, 16.0, 38.0>
  506. }
  507.  
  508. /*left entry gate*/
  509. object {
  510.    Gate
  511.    translate <-9.0, 0.0, 88.0>
  512. }
  513.  
  514. /*right entry gate*/
  515. object {
  516.    Gate
  517.    rotate <-10.0, -160.0, 0.0>
  518.    translate <7.0, 0.0, 87.5>
  519. }
  520.  
  521. /*Use gate object to make left & right fence*/
  522. object {
  523.    Gate
  524.    translate <-19.0, 0.0, 88.0>
  525. }
  526.  
  527. object {
  528.    Gate
  529.    translate <-31.0, 0.0, 88.0>
  530. }
  531.  
  532. object {
  533.    Gate
  534.    translate <9.0, 0.0, 88.0>
  535. }
  536.  
  537. object {
  538.    Gate
  539.    translate <19.0, 0.0, 88.0>
  540. }
  541.  
  542. /* Columns to hold the fence and gates up */
  543. object { Column translate <-20.0, 0.0, 88.0> }
  544. object { Column translate <-10.0, 0.0, 88.0> }
  545. object { Column translate < 8.0, 0.0, 88.0> }
  546. object { Column translate < 18.0, 0.0, 88.0> }
  547.  
  548. /*hill under tomb*/
  549. object {
  550.    Paraboloid_Y
  551.    scale <40.0, 10.0, 77.0>
  552.    rotate <0.0, 0.0, 180.0>
  553.    translate <0.0, 21.0, -28.0>
  554.  
  555.    texture {
  556.       pigment { color red 0.5 green 0.6 blue 0.2 }
  557.       normal {
  558.          bumps 0.8
  559.          scale 5.0
  560.       }
  561.       finish {
  562.          ambient 0.1
  563.          diffuse 0.7    
  564.       }
  565.    }                                         
  566. }
  567.  
  568. /*hill to right of tomb*/
  569. object {
  570.    Paraboloid_Y
  571.    scale <30.0, 10.0, 40.0>
  572.    rotate 180.0*z
  573.    translate <40.0, 14.0, 50.0>
  574.  
  575.    texture {
  576.       pigment { color red 0.6 green 0.6 blue 0.1 }
  577.       normal {
  578.          bumps 0.8
  579.          scale < 7.0, 5.0, 5.0>
  580.       }
  581.       finish {
  582.          ambient 0.1
  583.          diffuse 0.7
  584.       }
  585.    }
  586. }
  587.  
  588. /* Ground */
  589. plane {
  590.    y, 1.0
  591.  
  592.    texture {
  593.       pigment { color red 0.6 green 0.6 blue 0.1 }
  594.       normal {
  595.          bumps 0.7
  596.          scale < 1.0, 1.0, 1.0>
  597.       }
  598.       finish {
  599.          ambient 0.1
  600.          diffuse 0.7
  601.       }
  602.    }
  603. }
  604.  
  605. /*The Sun*/
  606. light_source { <150.0, 30.0, 1200.0> color red 1 green .8 blue .65 }
  607.  
  608. /* Sky - gradient sunset*/
  609. sphere {
  610.    <0.0, 0.0, 0.0>, 2000.0
  611.    inverse
  612.  
  613.    texture {
  614.       pigment {
  615.          Sunset_Sky
  616.          translate 200.0*y
  617.          scale 1.2
  618.          quick_color Green
  619.       }
  620.       finish {
  621.          ambient 0.6
  622.          diffuse 0.0
  623.       }
  624.    }
  625. }
  626.  
  627. /* Clouds - uses a sky texture with the sky portion defined as transparent */
  628. /*          so the gradient behind it is visible  */
  629. sphere {
  630.    <0.0, 0.0, 0.0>, 1997.0
  631.    inverse
  632.    texture {
  633.       pigment {
  634.          Yellow_Clouds
  635.          scale <1000.0 30.0 100.0>
  636.          quick_color Green
  637.       }
  638.       finish {
  639.          ambient 0.7
  640.          diffuse 0.0
  641.       }
  642.    }
  643. }
  644.